package com.ape.mapsa.produccion.model;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * The persistent class for the orden_produccion database table.
 * 
 */
@Entity
@Table(name = "orden_produccion")
public class OrdenProduccion implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;

	@Column(name = "bolsas_sobre")
	private int bolsasSobre;

	private int cantidad;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "fecha_creacion")
	private Date fechaCreacion;

	@Temporal(TemporalType.DATE)
	@Column(name = "fecha_entrega")
	private Date fechaEntrega;

	private String observacion;

	private int prioridad;

	@Temporal(TemporalType.TIMESTAMP)
	private Date modificationdate;

	private String modifiedby;

	@Column(name = "sobres_bulto")
	private int sobresBulto;

	@OneToOne(mappedBy = "ordenProduccion", cascade = { CascadeType.ALL })
	private Extrusion extrusion = new Extrusion();

	// bi-directional many-to-one association to Confeccion
	@OneToOne(mappedBy = "ordenProduccion", cascade = { CascadeType.ALL })
	private Confeccion confeccions;

	// bi-directional many-to-one association to Impresion
	@OneToOne(mappedBy = "ordenProduccion", cascade = { CascadeType.ALL })
	private Impresion impresions;

	// bi-directional many-to-one association to OpComment
	@OneToMany(mappedBy = "ordenProduccionBean")
	private List<OpComment> opComments;

	// bi-directional many-to-one association to EstadoProduccion
	@ManyToOne
	@JoinColumn(name = "estado_produccion_id")
	private EstadoProduccion estadoProduccion;

	// bi-directional many-to-one association to Item
	@ManyToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
	private Item item;

	// bi-directional many-to-one association to PedidoVenta
	@ManyToOne
	@JoinColumn(name = "pedido_venta")
	private PedidoVenta pedidoVenta;

	// bi-directional many-to-one association to Formula
	@ManyToOne
	@JoinColumn(name = "formulas_id")
	private Formula formula;

	public OrdenProduccion() {
		this.pedidoVenta = new PedidoVenta();
		this.item = new Item();
		this.estadoProduccion = new EstadoProduccion();
		this.extrusion = new Extrusion();
	}

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public int getBolsasSobre() {
		return this.bolsasSobre;
	}

	public void setBolsasSobre(int bolsasSobre) {
		this.bolsasSobre = bolsasSobre;
	}

	public int getCantidad() {
		return this.cantidad;
	}

	public void setCantidad(int cantidad) {
		this.cantidad = cantidad;
	}

	public Date getFechaCreacion() {
		return this.fechaCreacion;
	}

	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}

	public Date getFechaEntrega() {
		return this.fechaEntrega;
	}

	public void setFechaEntrega(Date fechaEntrega) {
		this.fechaEntrega = fechaEntrega;
	}

	public String getObservacion() {
		return this.observacion;
	}

	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}

	public int getPrioridad() {
		return this.prioridad;
	}

	public void setPrioridad(int prioridad) {
		this.prioridad = prioridad;
	}

	public int getSobresBulto() {
		return this.sobresBulto;
	}

	public void setSobresBulto(int sobresBulto) {
		this.sobresBulto = sobresBulto;
	}

	public Extrusion getExtrusion() {
		return extrusion;
	}

	public void setExtrusion(Extrusion extrusion) {
		this.extrusion = extrusion;
	}

	public List<OpComment> getOpComments() {
		return this.opComments;
	}

	public void setOpComments(List<OpComment> opComments) {
		this.opComments = opComments;
	}

	public OpComment addOpComment(OpComment opComment) {
		getOpComments().add(opComment);
		opComment.setOrdenProduccionBean(this);

		return opComment;
	}

	public OpComment removeOpComment(OpComment opComment) {
		getOpComments().remove(opComment);
		opComment.setOrdenProduccionBean(null);

		return opComment;
	}

	public EstadoProduccion getEstadoProduccion() {
		return this.estadoProduccion;
	}

	public void setEstadoProduccion(EstadoProduccion estadoProduccion) {
		this.estadoProduccion = estadoProduccion;
	}

	public Item getItem() {
		return this.item;
	}

	public void setItem(Item item) {
		this.item = item;
	}

	public PedidoVenta getPedidoVenta() {
		return this.pedidoVenta;
	}

	public void setPedidoVenta(PedidoVenta pedidoVenta) {
		this.pedidoVenta = pedidoVenta;
	}

	public Confeccion getConfeccions() {
		return confeccions;
	}

	public void setConfeccions(Confeccion confeccions) {
		this.confeccions = confeccions;
	}

	public Impresion getImpresions() {
		return impresions;
	}

	public void setImpresions(Impresion impresions) {
		this.impresions = impresions;
	}

	public Formula getFormula() {
		return formula;
	}

	public void setFormula(Formula formula) {
		this.formula = formula;
	}

	public Date getModificationdate() {
		return modificationdate;
	}

	public void setModificationdate(Date modificationdate) {
		this.modificationdate = modificationdate;
	}

	public String getModifiedby() {
		return modifiedby;
	}

	public void setModifiedby(String modifiedby) {
		this.modifiedby = modifiedby;
	}

}